'''
self的作用：
    1.在类的方法中，self代表的是类的实例对象，通过self可以访问类的属性和方法。
    2.在类的方法中，self可以用来区分不同的实例对象，每个实例对象都有自己的属性和方法。
    1、self代表的是什么？
    代表当前的对象。。。谁调用这个函数，这个self就代表谁
    由于self其实是一个代号而已，所以些什么名字都是可以的，但是尽量不要写其他的名字
    2、这个self机制定义出来的目的是什么？
    它方便我们在函数内部使用上当前这个对象的成员【属性和方法】
    python中的self，类似java和c++中的this
'''


class Student: 
# 定义一个类，类的名称是Student，类的作用是用来表示学生的信息。
    def __init__(self,name,age,gender): # 定义一个方法，方法的名称是__init__，方法的作用是用来初始化学生的信息。
        self.name=name # 将name赋值给self.name，self.name是学生的姓名，name是学生的姓名。
        self.age=age # 将age赋值给self.age，self.age是学生的年龄，age是学生的年龄。
        self.gender=gender # 将gender赋值给self.gender，self.gender是学生的性别，gender是学生的性别。
    #2.方法
    def pre(self):
        print(f"看书前。。")
    
    def aft(self):
        print(f"看书后。。")  
          
    def read(self,bookname): # 定义一个方法，方法的名称是read，方法的作用是用来表示学生的信息。
        self.pre()
        print(f"姓名：{self.name},年龄：{self.age},性别：{self.gender}在读{bookname}") # 输出学生的信息，学生的信息是姓名、年龄、性别。
        self.aft() # 调用方法，方法的名称是aft，方法的作用是用来表示学生的信息。    
    
#创建对象
s1=Student("张三",18,"男") # 创建一个对象，对象的名称是s1，对象的类型是Student，对象的属性是姓名、年龄、性别。
s2=Student("李四",19,"女") # 创建一个对象，对象的名称是s2，对象的类型是Student，对象的属性是姓名、年龄、性别。  
s3=Student("王五",20,"男") # 创建一个对象，对象的名称是s3，对象的类型是Student，对象的属性是姓名、年龄、性别。
s4=Student("赵六",21,"女") # 创建一个对象，对象的名称是s4，对象的类型是Student，对象的属性是姓名、年龄、性别。  
    
#调用函数
s1.read("三国演义") # 调用函数，函数的名称是read，函数的参数是一个对象，对象的名称是s1，对象的类型是Student，对象的属性是姓名、年龄、性别。
s2.read("水浒传") # 调用函数，函数的名称是read，函数的参数是一个对象，对象的名称是s2，对象的类型是Student，对象的属性是姓名、年龄、性别。
s3.read("红楼梦") # 调用函数，函数的名称是read，函数的参数是一个对象，对象的名称是s3，对象的类型是Student，对象的属性是姓名、年龄、性别。
s4.read("西游记") # 调用函数，函数的名称是read，函数的参数是一个对象，对象的名称是s4，对象的类型是Student，对象的属性是姓名、年龄、性别。
    
    